home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Atari Compendium
/
The Atari Compendium (Toad Computers) (1994).iso
/
files
/
umich
/
falcon
/
programm.ing
/
nt_dsp1.lzh
/
NT_DSP1.MSA
/
FLOAT
/
FPFLOAT.ASM
< prev
next >
Wrap
Assembly Source File
|
1989-01-24
|
2KB
|
70 lines
;
; This program originally available on the Motorola DSP bulletin board.
; It is provided under a DISCLAIMER OF WARRANTY available from
; Motorola DSP Operation, 6501 Wm. Cannon Drive W., Austin, Tx., 78735.
;
; Last Update 6 Oct 87 Version 2.0
;
fpfloat ident 2,0
;
; MOTOROLA DSP56000/1 FPLIB - VERSION 2
;
; FPFLOAT - FIXED POINT TO FLOATING POINT CONVERSION SUBROUTINE
;
; Entry points: float_a R = float(A)
; float_x R = float(X)
;
; data = 56 bit two's complement fixed point number
; consisting of a 48 bit fraction with an 8 bit
; integer extension in standard accumulator data
; representation.
;
; m = 24 bit mantissa (two's complement, normalized fraction)
;
; e = 14 bit exponent (unsigned integer, biased by +8191)
;
; Input variables:
;
; X x1 = data
;
; A a = data
;
; Output variables:
;
; R a2 = sign extension of mr
; a1 = mr (normalized)
; a0 = zero
;
; b2 = sign extension of er (always zero)
; b1 = er
; b0 = zero
;
; Error conditions: none
;
; Assumes n0, m0, shift constant table and scaling modes
; initialized by previous call to the subroutine "fpinit".
;
; Alters Data ALU Registers
; a2 a1 a0 a
; b2 b1 b0 b
; y1
;
; Alters Address Registers
; r0
;
; Alters Program Control Registers
; pc sr
;
; Uses 0 locations on System Stack
;
;
float_x tfr x1,a ;get data
float_a tst a fp_space:fp_ebias,r0 ;check data, initialize er
jnr float1 ;jump if data normalized
norm8 rep #8 ;normalize up to 8 bits left or right
norm r0,a ;normalize one bit, update er
jnn norm8 ;jump if not normalized
float1 rnd a ;round mr to 24 bits
norm r0,a ;correct overflow due to rounding
jmp check1 ;go check exponent range